Message ID | 20210924164131.2326532-1-hjl.tools@gmail.com |
---|---|
State | New |
Headers | show |
Series | Disable symbol hack in libc_nonshared.a | expand |
* H. J. Lu via Libc-alpha: > Don't reference __GI_memmove, __GI_memset, __GI_memcpy, __divdi3_internal, > __udivdi3_internal and __moddi3_internal in libc_nonshared.a. Patch looks correct me. Commit subject should say “lib*_nonshared.a” (it's not restricted to libc, despite the macro name). Thanks, Florian
On Mon, Sep 27, 2021 at 6:30 AM Florian Weimer <fweimer@redhat.com> wrote: > > * H. J. Lu via Libc-alpha: > > > Don't reference __GI_memmove, __GI_memset, __GI_memcpy, __divdi3_internal, > > __udivdi3_internal and __moddi3_internal in libc_nonshared.a. > > Patch looks correct me. Commit subject should say “lib*_nonshared.a” > (it's not restricted to libc, despite the macro name). The symbol hack only applies to libc: diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h index 3586e6ed38..1115e4c0a7 100644 --- a/sysdeps/generic/symbol-hacks.h +++ b/sysdeps/generic/symbol-hacks.h @@ -1,6 +1,7 @@ /* Some compiler optimizations may transform loops into memset/memmove calls and without proper declaration it may generate PLT calls. */ -#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED ^^^^^^^^^^^ +#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED \ + && !defined LIBC_NONSHARED asm ("memmove = __GI_memmove"); asm ("memset = __GI_memset"); asm ("memcpy = __GI_memcpy"); and diff --git a/sysdeps/wordsize-32/divdi3-symbol-hacks.h b/sysdeps/wordsize-32/divdi3-symbol-hacks.h index 3e7c54bd0c..efbb0cce8b 100644 --- a/sysdeps/wordsize-32/divdi3-symbol-hacks.h +++ b/sysdeps/wordsize-32/divdi3-symbol-hacks.h @@ -23,7 +23,8 @@ assembler. Note: in_divdi3_c is only used to avoid symbol alias on divdi3 build itself. */ -#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) && defined SHARED ^^^^^^^^^^^ +#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) \ + && defined SHARED && !defined LIBC_NONSHARED I am checking in my patch ASIS. Thanks.
* H. J. Lu: > On Mon, Sep 27, 2021 at 6:30 AM Florian Weimer <fweimer@redhat.com> wrote: >> >> * H. J. Lu via Libc-alpha: >> >> > Don't reference __GI_memmove, __GI_memset, __GI_memcpy, __divdi3_internal, >> > __udivdi3_internal and __moddi3_internal in libc_nonshared.a. >> >> Patch looks correct me. Commit subject should say “lib*_nonshared.a” >> (it's not restricted to libc, despite the macro name). > > The symbol hack only applies to libc: > I am checking in my patch ASIS. Yes, you are right. Thanks. Florian
diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h index 3586e6ed38..1115e4c0a7 100644 --- a/sysdeps/generic/symbol-hacks.h +++ b/sysdeps/generic/symbol-hacks.h @@ -1,6 +1,7 @@ /* Some compiler optimizations may transform loops into memset/memmove calls and without proper declaration it may generate PLT calls. */ -#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED +#if !defined __ASSEMBLER__ && IS_IN (libc) && defined SHARED \ + && !defined LIBC_NONSHARED asm ("memmove = __GI_memmove"); asm ("memset = __GI_memset"); asm ("memcpy = __GI_memcpy"); diff --git a/sysdeps/wordsize-32/divdi3-symbol-hacks.h b/sysdeps/wordsize-32/divdi3-symbol-hacks.h index 3e7c54bd0c..efbb0cce8b 100644 --- a/sysdeps/wordsize-32/divdi3-symbol-hacks.h +++ b/sysdeps/wordsize-32/divdi3-symbol-hacks.h @@ -23,7 +23,8 @@ assembler. Note: in_divdi3_c is only used to avoid symbol alias on divdi3 build itself. */ -#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) && defined SHARED +#if !defined __ASSEMBLER__ && !defined in_divdi3_c && IS_IN (libc) \ + && defined SHARED && !defined LIBC_NONSHARED asm ("__divdi3 = __divdi3_internal"); asm ("__udivdi3 = __udivdi3_internal"); asm ("__moddi3 = __moddi3_internal");