Add STT_GNU_IFUNC support

Registered by Andrew Stubbs

Add ARM specific STT_GNU_IFUNC support to Binutils. Ignore GOLD for now.

Blueprint information

Status:
Complete
Approver:
Loïc Minier
Priority:
High
Drafter:
Andrew Stubbs
Direction:
Needs approval
Assignee:
Richard Sandiford
Definition:
Approved
Series goal:
Accepted for 11.05
Implementation:
Implemented
Milestone target:
milestone icon 11.05-final
Started by
Michael Hope
Completed by
Michael Hope

Related branches

Sprints

Whiteboard

michaelh1 shifted off the demonstration side to cortex-strings for next cycle.

From the summit:
 - a bit harder than GCC hardware-capabilities
 - used on i386 for string functions in addition to hardware caps.
 - instead of linking to particular function
 - can have problems with JIT compilers
 - can run without libc?
 - can be used to create an OS that works on any device (and is then stripped of unused codepaths post install)

Effort: 2-4M

Status:
 - ARM have officially allocated relocation number 160 for R_ARM_IRELATIVE.
 - binutils support submitted upstream & committed.
 - GLIBC support written. Submission underway..

(?)

Work Items

Work items:
Investigate extent of the work: DONE
Prototype: DONE
Implement using a private relocation: DONE
Get ABI extensions from ARM: DONE
Document ABI extensions: DONE
Finish implementation using public relocation (binutils): DONE
Finish implementation using public relocation (glibc): DONE
Add test cases: DONE

Dependency tree

* Blueprints in grey have been implemented.

This blueprint contains Public information 
Everyone can see this information.