← Back to team overview

ocaml-maint team mailing list archive

Re: [Bug 810402] Re: all native ocaml programs segfault on armel

 

Thanks for the great analysis.

Dave Martin <dave.martin@xxxxxxxxxx> writes:
> If so, we can work around it my adding all the required .type directives
> for code symbols in ocaml, but we should still raise the issue as a
> possible linker bug.

I think that's more than a workaround.  I think it's required by the EABI.
4.6.2 says:

    All code symbols exported from an object file (symbols with binding
    STB_GLOBAL) shall have type STT_FUNC.

so the code is violating that.  It also says:

    All extern data objects shall have type STT_OBJECT. No STB_GLOBAL
    data symbol shall have type STT_FUNC.

    The type of an undefined symbol shall be STT_NOTYPE or the type of
    its expected definition.

    The type of any other symbol defined in an executable section can be
    STT_NOTYPE. The linker is only required to provide interworking
    support for symbols of type STT_FUNC (interworking for untyped
    symbols must be encoded directly in the object file).

Like you say, the linker only considers converting BL to BLX for
function symbols, but I think that's deliberate.

Richard

-- 
You received this bug notification because you are a member of Debian
OCaml Maintainers, which is subscribed to ocaml in Ubuntu.
https://bugs.launchpad.net/bugs/810402

Title:
  all native ocaml programs segfault on armel

Status in Linaro Binutils:
  New
Status in “binutils” package in Ubuntu:
  Confirmed
Status in “ocaml” package in Ubuntu:
  Confirmed
Status in “binutils” source package in Oneiric:
  Confirmed
Status in “ocaml” source package in Oneiric:
  Confirmed

Bug description:
  Starting from version 2.21.52.20110606-1ubuntu1 (in oneiric), all
  programs produced by ocamlopt segfault on Ubuntu/armel. The problem
  disappears after downgrading binutils to 2.21.51.20110421-6ubuntu1.

  Steps to reproduce: echo > empty.ml && ocamlopt empty.ml && ./a.out

  Using the "-S" option of ocamlopt might be useful, to have a look at
  the generated assembly code, but I don't know what to look for... I
  hope someone more familiar with binutils code can help.

  I found that while investigating the recent build failures of ocaml
  stuff or armel. Everything works find in the armel port of Debian.

To manage notifications about this bug go to:
https://bugs.launchpad.net/binutils-linaro/+bug/810402/+subscriptions


References