Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Position-independent code
(section)
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
== References == {{Reflist|refs= <ref name="RedHat_PIE">{{cite web |url=https://access.redhat.com/blogs/766093/posts/1975793 |title=Position Independent Executables (PIE)}}</ref> <ref name="Sperry_1962">{{cite manual |title=Reference Manual UNIVAC III Data Processing System |id=UT-2488 |date=1962 |url=http://www.bitsavers.org/pdf/univac/univac3/UT-2488_UNIVACIII_ref_Jun62.pdf |publisher=[[Sperry Rand Corporation]]}}</ref> <ref name="Levine_1999_CH8">{{cite book |author-last=Levine |author-first=John R. |author-link=John R. Levine |title=Linkers and Loaders |date=2000 |orig-date=October 1999 |edition=1 |publisher=[[Morgan Kaufmann]] |series=The Morgan Kaufmann Series in Software Engineering and Programming |location=San Francisco, USA |isbn=1-55860-496-0 |id={{ISBN|978-1-55860-496-4}} |oclc=42413382 |chapter=Chapter 8: Loading and overlays |chapter-url=https://archive.today/20130103082119/http://www.iecc.com/linker/linker08.html<!-- https://web.archive.org/web/20120216090547/http://darcs.olsner.se/Linker/linker-book/linker08.html --> |pages=170{{ndash}}171 |url=https://www.iecc.com/linker/ |access-date=2020-01-12 |url-status=live |archive-url=https://archive.today/20121205032107/http://www.iecc.com/linker/ |archive-date=2012-12-05}} Code: [https://archive.today/20200114225034/https://linker.iecc.com/code.html][ftp://ftp.iecc.com/pub/linker/]{{dead link|date=May 2025|bot=medic}}{{cbignore|bot=medic}} Errata: [https://linker.iecc.com/<!-- https://archive.today/20200114224817/https://linker.iecc.com/ 2020-01-14 -->]</ref> <ref name="Gabert_2004">{{cite web |title=Position Independent Code internals |author-first=Alexander |author-last=Gabert |date=January 2004 |work=[[Hardened Gentoo]] |url=http://www.gentoo.org/proj/en/hardened/pic-internals.xml |access-date=2009-12-03 |quote=[β¦] direct non-PIC-aware addressing is always cheaper (read: faster) than PIC addressing. [β¦]}}</ref> <ref name="Microsoft_Win">{{cite web |url=https://view.officeapps.live.com/op/view.aspx?src=http%3A%2F%2Fdownload.microsoft.com%2Fdownload%2F9%2Fc%2F5%2F9c5b2167-8017-4bae-9fde-d599bac8184a%2FMemMgt.docx |title=Advances in Memory Management for Windows |website=View.officeapps.live.com |access-date=2017-06-23}}</ref> <ref name="Non-PIE">{{cite web |url=https://stackoverflow.com/questions/16455416/non-pie-binary-the-executable-project-name-is-not-a-position-independent-exe|title=iphone - Non-PIE Binary - The executable 'project name' is not a Position Independent Executable. - Stack Overflow |work=stackoverflow.com}}</ref> <ref name="iOS">{{cite web |url=https://developer.apple.com/library/ios/#qa/qa1788/_index.html |title=iOS Developer Library |work=apple.com}}</ref> <ref name="Fedora_2014">{{cite web |url=http://undeadly.org/cgi?action=article&sid=20141224204700&mode=expanded&count=0 |title=Heads Up: Snapshot Upgrades for Static PIE |date=2014-12-24 |access-date=2014-12-24}}</ref> <ref name="OpenBSD_2013">{{cite web |url=https://www.openbsd.org/53.html |title=OpenBSD 5.3 Release |date=2013-05-01 |access-date=2020-05-09}}</ref> <ref name="Fedora">{{cite web |url=http://fedoraproject.org/wiki/Changes/Harden_All_Packages |title=Changes/Harden All Packages - FedoraProject |website=fedoraproject.org}}</ref> <ref name="Ubuntu">{{cite web |url=https://lists.ubuntu.com/archives/ubuntu-devel/2017-June/039816.html |title=Ubuntu Foundations Team - Weekly Newsletter, 2017-06-15 |date=2017-06-15 |access-date=2017-06-17}}</ref> <ref name="Android_1-4">{{cite web |url=https://source.android.com/security/enhancements/enhancements41.html |title=Security Enhancements in Android 1.5 through 4.1 - Android Open Source Project |website=Android Open Source Project}}</ref> <ref name="Android_5">{{cite web |url=https://source.android.com/security/enhancements/enhancements50.html|title=Security Enhancements in Android 5.0 - Android Open Source Project |website=Android Open Source Project}}</ref> <ref name="Intel_iRMX">{{cite book |title=iRMX 86 Application Loader Reference Manual |publisher=[[Intel]] |url=http://bitsavers.informatik.uni-stuttgart.de/pdf/intel/iRMX/iRMX_86_Rev_6_Mar_1984/146196_Burst/iRMX_86_Application_Loader_Reference_Manual.pdf |chapter=Types of Object Code |pages=((1{{hyphen}}2, 1{{hyphen}}3)) |access-date=2017-08-21 |quote=[β¦] ''Absolute code'', and an absolute object module, is code that has been processed by LOC86 to run only at a specific location in memory. The [[Loader (computing)|Loader]] loads an absolute object module only into the specific location the module must occupy. ''Position-independent code'' (commonly referred to as PIC) differs from absolute code in that PIC can be loaded into any memory location. The advantage of PIC over absolute code is that PIC does not require you to reserve a specific block of memory. When the Loader loads PIC, it obtains [[iRMX 86]] memory segments from the pool of the calling task's job and loads the PIC into the segments. A restriction concerning PIC is that, as in the [[PL/M-86]] COMPACT model of segmentation [β¦], it can have only one code segment and one data segment, rather than letting the base addresses of these segments, and therefore the segments themselves, vary dynamically. This means that PIC programs are necessarily less than 64K bytes in length. PIC code can be produced by means of the BIND control of LINK86. ''[[Load-time locatable code]]'' (commonly referred to as LTL code) is the third form of object code. LTL code is similar to PIC in that LTL code can be loaded anywhere in memory. However, when loading LTL code, the Loader changes the base portion of pointers so that the pointers are independent of the initial contents of the registers in the microprocessor. Because of this fixup (adjustment of base addresses), LTL code can be used by tasks having more than one code segment or more than one data segment. This means that LTL programs may be more than 64K bytes in length. [[FORTRAN 86]] and [[Pascal 86]] automatically produce LTL code, even for short programs. LTL code can be produced by means of the BIND control of LINK86. [β¦]}}</ref> <ref name="gentoo-pie">{{cite web |url=https://www.gentoo.org/support/news-items/2017-11-30-new-17-profiles.html |title=New 17.0 profiles in the Gentoo repository |date=2017-11-30 |access-date=2017-12-10}}</ref> <ref name="IBM_1952_701">{{cite web |title=701 Announced |date=1952-04-29 |publisher=[[IBM]] |url=https://www.ibm.com/ibm/history/exhibits/701/701_announced.html |mode=cs2}}</ref> <ref name="Honeywell_1982">{{cite book |title=DPS/LEVEL 68 & DPS 8M MULTICS PROCESSOR MANUAL |id=AL39 |publisher=[[Honeywell Information Systems Inc.]] |pages=6β21 |section=Section 6 Virtual Address Formation |edition=Rev. 1 |date=1982 |url=http://bitsavers.org/pdf/honeywell/large_systems/multics/AL39-01B_MULTICS_Processor_Manual_Feb82.pdf |mode=cs2 |access-date=2023-03-25}}</ref> <ref name="IBM_1978_TSS">{{cite manual |title=IBM Time Sharing System Concepts and Facilities |id=GC28-2003-6 |section=Section 3: TSS for the: Svslcm Programmer |page=61 |date=April 1978 |edition=Seventh |url=http://bitsavers.org/pdf/ibm/360/tss/GC28-2003-6_Time_Sharing_System_Concepts_and_Facilities_Apr78.pdf}}</ref> <ref name="IBM_1971_360">{{cite manual |title=IBM System/360 Time Sharing System Dynamic Loader |id=GY28-2031-3 |date=September 1971 |url=http://bitsavers.org/pdf/ibm/360/tss/GY28-2031-3_Time_Sharing_System_Dynamic_Loader_PLM_Sep71.pdf |edition=Fourth}}</ref> <ref name="Liang_2017">{{cite web |author-last=Liang |author-first=Mudong |date=2017-08-08 |title=When did Debian decide to enabled PIE by default? |url=https://lists.debian.org/debian-user/2017/08/msg00456.html |access-date=2021-07-06 |website=debian.org}}</ref> }} * {{cite book |title=Nios II Processor Reference Guide |chapter=7.9.5. Linux Position-Independent Code |chapter-url=https://www.intel.com/content/www/us/en/docs/programmable/683836/current/linux-position-independent-code.html |publisher=[[Intel]]}} * {{cite book |title=Linker and Libraries Guide |chapter=Position-Independent Code |chapter-url=https://docs.oracle.com/cd/E26505_01/html/E26506/glmqp.html |publisher=[[Oracle Corporation|Oracle]]}}
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)