[Bug 721531]

Rsandifo-gcc 721531 at bugs.launchpad.net
Tue Jun 7 07:32:37 UTC 2011


(In reply to comment #3)
> Btw, we finally should introduce a target hook for this I think.

Thanks for the patch in comment #2.  How strongly do you feel
about the hook though?  In PR35705, it sounded like a lot of
targets actually need an opt-out for functions, either because
of ISA encoding (ARM, MIPS, SH) or because of function
descriptors (IA-64, PA, PPC).

I notice that ARM and mcore also have optimisation-dependent
FUNCTION_BOUNDARYs.  Arguably (very arguably) that's a bug,
and they should be using align_functions instead.  But if we
make a deliberate decision to honour DECL_ALIGN on functions,
then FUNCTION_BOUNDARY really will be an ABI property.
I'm just worried that the combination of that and the need
to identify exactly which targets should define the hook
might be more hassle than the optimisation is worth.

You said in that bug that masking function addresses isn't
likely to be a common operation, and TBH, I still agree.

Richard

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to gcc-4.5 in Ubuntu.
https://bugs.launchpad.net/bugs/721531

Title:
  [armel] gcc computes wrong address for main() at build time

Status in The GNU Compiler Collection:
  New
Status in Linaro GCC:
  Triaged
Status in “gcc-4.5” package in Ubuntu:
  Triaged
Status in “gcc-4.5” source package in Natty:
  Won't Fix
Status in “gcc-4.5” source package in Oneiric:
  Triaged

Bug description:
  Binary package hint: gcc-4.5

  During the debugging of mono, we found a confirmed tool chain
  regression and isolated it down to a testcase:

  Test code:

  void main() {
          void *p = main;
          if ((int)p & 1) printf ("HIT!\n"); 
  }

  Output:

  mcasadevall at risingsun:~/tmp$ gcc  -g test.c 
  test.c: In function 'main':
  test.c:3:18: warning: incompatible implicit declaration of built-in function 'printf'
  mcasadevall at risingsun:~/tmp$ ./a.out 
  HIT!

  mcasadevall at risingsun:~/tmp$ gcc  -g -O2 test.c 
  test.c: In function 'main':
  test.c:3:18: warning: incompatible implicit declaration of built-in function 'printf'
  mcasadevall at risingsun:~/tmp$ ./a.out 
  mcasadevall at risingsun:~/tmp$ 

  Doesn't occur with gcc-4.4.

  Additional comments from #monodev:
  16:26:58 < vargaz> NCommander: it seems to think function addresses on arm 
                     have their lowest bit set to 0, which is not true for 
                     thumb.




More information about the foundations-bugs mailing list