OK, I didn't know there is a patch in mail list. BTW, it seems there is no meaningful difference with the generated code: when it's trying to align to 32 bytes border, since the actual code size is between 32 and 64, actually the entry size is 64. So in this case, balign to 32 or 64 has same result
I heard that mesa will change to use libglvnd, if that will happen soon, then we don't worry about code here any more. On Wed, Nov 27, 2019 at 5:57 AM Jonathan Gray <j...@jsg.id.au> wrote: > On Sun, Nov 11, 2018 at 03:47:35PM +1100, Jonathan Gray wrote: > > Make similiar changes to libglvnd to avoid a text relocation in > > x86 tsd stubs fixing the build with lld. > > > > v2: > > - store the address of the GOT in ebx required before calling PLT stub > > - change .balign values to match X86_ENTRY_SIZE > > When a different version of this patch was committed/pushed in > 45206d7673adb1484cbdb3eadaf82e0849c9cdcf > (with author rewritten to imply I wrote the commit message) > it did not include the .balign changes to match the entry size change. > > Was this purposefully skipped or overlooked as the bugzilla patch was > used? > > The diff to what was committed and this patch is > > diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h > index bd8db7b19f9..1dec3ed86c4 100644 > --- a/src/mapi/entry_x86_tsd.h > +++ b/src/mapi/entry_x86_tsd.h > @@ -34,18 +34,18 @@ > #define X86_ENTRY_SIZE 64 > > __asm__(".text\n" > - ".balign 32\n" > + ".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" > "x86_entry_start:"); > > #define STUB_ASM_ENTRY(func) \ > ".globl " func "\n" \ > ".type " func ", @function\n" \ > - ".balign 32\n" \ > + ".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" \ > func ":" > > #define STUB_ASM_CODE(slot) \ > "push %ebx\n\t" \ > - "call 1f\n\t" \ > + "call 1f\n" \ > "1:\n\t" \ > "popl %ebx\n\t" \ > "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx\n\t" \ > @@ -53,7 +53,7 @@ __asm__(".text\n" > "mov (%eax), %eax\n\t" \ > "testl %eax, %eax\n\t" \ > "jne 1f\n\t" \ > - "call " ENTRY_CURRENT_TABLE_GET "@PLT\n\t" \ > + "call " ENTRY_CURRENT_TABLE_GET "@PLT\n" \ > "1:\n\t" \ > "pop %ebx\n\t" \ > "jmp *(4 * " slot ")(%eax)" > @@ -63,7 +63,7 @@ __asm__(".text\n" > > #ifndef MAPI_MODE_BRIDGE > > -__asm__(".balign 32\n" > +__asm__(".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" > "x86_entry_end:"); > > #include <string.h> > > > > > Signed-off-by: Jonathan Gray <j...@jsg.id.au> > > Cc: mesa-sta...@lists.freedesktop.org > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=108541 > > --- > > src/mapi/entry_x86_tsd.h | 22 ++++++++++++++-------- > > 1 file changed, 14 insertions(+), 8 deletions(-) > > > > diff --git a/src/mapi/entry_x86_tsd.h b/src/mapi/entry_x86_tsd.h > > index 0c28c8ff068..1dec3ed86c4 100644 > > --- a/src/mapi/entry_x86_tsd.h > > +++ b/src/mapi/entry_x86_tsd.h > > @@ -31,25 +31,31 @@ > > #define HIDDEN > > #endif > > > > -#define X86_ENTRY_SIZE 32 > > +#define X86_ENTRY_SIZE 64 > > > > __asm__(".text\n" > > - ".balign 32\n" > > + ".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" > > "x86_entry_start:"); > > > > #define STUB_ASM_ENTRY(func) \ > > ".globl " func "\n" \ > > ".type " func ", @function\n" \ > > - ".balign 32\n" \ > > + ".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" \ > > func ":" > > > > #define STUB_ASM_CODE(slot) \ > > - "movl " ENTRY_CURRENT_TABLE ", %eax\n\t" \ > > + "push %ebx\n\t" \ > > + "call 1f\n" \ > > + "1:\n\t" \ > > + "popl %ebx\n\t" \ > > + "addl $_GLOBAL_OFFSET_TABLE_+[.-1b], %ebx\n\t" \ > > + "movl " ENTRY_CURRENT_TABLE "@GOT(%ebx), %eax\n\t" \ > > + "mov (%eax), %eax\n\t" \ > > "testl %eax, %eax\n\t" \ > > - "je 1f\n\t" \ > > - "jmp *(4 * " slot ")(%eax)\n" \ > > + "jne 1f\n\t" \ > > + "call " ENTRY_CURRENT_TABLE_GET "@PLT\n" \ > > "1:\n\t" \ > > - "call " ENTRY_CURRENT_TABLE_GET "\n\t" \ > > + "pop %ebx\n\t" \ > > "jmp *(4 * " slot ")(%eax)" > > > > #define MAPI_TMP_STUB_ASM_GCC > > @@ -57,7 +63,7 @@ __asm__(".text\n" > > > > #ifndef MAPI_MODE_BRIDGE > > > > -__asm__(".balign 32\n" > > +__asm__(".balign " U_STRINGIFY(X86_ENTRY_SIZE) "\n" > > "x86_entry_end:"); > > > > #include <string.h> > > -- > > 2.19.1 > > > > _______________________________________________ > > mesa-dev mailing list > > mesa-dev@lists.freedesktop.org > > https://lists.freedesktop.org/mailman/listinfo/mesa-dev >
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev