On Tue, May 3, 2011 at 16:39, Chris Demetriou <c...@google.com> wrote: > > It is also OK if you s/__i686/__x86/ to correspond to your earlier > > change. Either way is OK. > > Well, that change is not in trunk. > Should that change move to trunk, yes, it's appropriate to change this > as well (though strictly not *necessary*).
*sigh* As it turns out, adding __i686.get_pc_thunk.bx to this assembly code -- *cough* this _preprocessed_ assembly code -- chokes in certain configurations. For instance, if you configure with: --with-arch-32=pentium3 then libgcc will build with -march=pentium3 The way the symbol-visibility files are built and processed, morestack.vis is generated from morestack.S, and contains: .hidden __i686.get_pc_thunk.bx morestack.vis is included via -include when compiling morestack.S. ./morestack.vis:4: Error: junk at end of line, first unrecognized character is `1' As someone smarter than me might have guessed... in this configuration, __i686 is defined to be '1'. So, even if the trunk get_thunk code continues to use __i686.get_pc_thunk.<reg>, it's necessary to use something different here. Kinda feels like I got smacked in the face by walking into my own rake... *sigh* Ian, per your previous comment (which I read as pre-approval for this change 8-), I'm planning to commit the attached as soon as it's done testing. chris ----- [libgcc/ChangeLog] 2011-05-04 Chris Demetriou <c...@google.com> * config/i386/morestack.S (__i686.get_pc_thunk.bx): Rename... (__x86.get_pc_thunk.bx): To this. (__morestack): Adjust for rename, remove undef of __i686.
[libgcc/ChangeLog] 2011-05-04 Chris Demetriou <c...@google.com> * config/i386/morestack.S (__i686.get_pc_thunk.bx): Rename... (__x86.get_pc_thunk.bx): To this. (__morestack): Adjust for rename, remove undef of __i686. Index: libgcc/config/i386/morestack.S =================================================================== --- libgcc/config/i386/morestack.S (revision 173355) +++ libgcc/config/i386/morestack.S (working copy) @@ -278,8 +278,7 @@ movl 4(%esp),%eax # Function argument. movl %eax,(%esp) #ifdef __PIC__ -#undef __i686 - call __i686.get_pc_thunk.bx # %ebx may not be set up for us. + call __x86.get_pc_thunk.bx # %ebx may not be set up for us. addl $_GLOBAL_OFFSET_TABLE_, %ebx call _Unwind_Resume@PLT # Resume unwinding. #else @@ -451,20 +450,19 @@ #if !defined(__x86_64__) && defined(__PIC__) # Output the thunk to get PC into bx, since we use it above. -# (__i686 was already undef'd above; don't need to worry about it here.) - .section .text.__i686.get_pc_thunk.bx,"axG",@progbits,__i686.get_pc_thunk.bx,comdat - .globl __i686.get_pc_thunk.bx - .hidden __i686.get_pc_thunk.bx + .section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat + .globl __x86.get_pc_thunk.bx + .hidden __x86.get_pc_thunk.bx #ifdef __ELF__ - .type __i686.get_pc_thunk.bx, @function + .type __x86.get_pc_thunk.bx, @function #endif -__i686.get_pc_thunk.bx: +__x86.get_pc_thunk.bx: .cfi_startproc movl (%esp), %ebx ret .cfi_endproc #ifdef __ELF__ - .size __i686.get_pc_thunk.bx, . - __i686.get_pc_thunk.bx + .size __x86.get_pc_thunk.bx, . - __x86.get_pc_thunk.bx #endif #endif