代码拉取完成,页面将自动刷新
同步操作将从 OpenHarmony/third_party_elfutils 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Fundamental design decision:
- the sizes of external and internal types are assumed to be the same.
This leaves byte ordering aside. While assuming this the code can be
greatly simplified and speed increases. Since no change violating this
assumption is in sight this is believed to be a worthwhile optimization.
- the ABI of the backend modules is not guaranteed. Really, no guarantee
whatsoever. We are enforcing this in the code. The modules and their
users must match. No third-party EBL module are supported or allowed.
The only reason there are separate modules is to not have the code for
all architectures in all the binaries.
- although the public libraries (libasm, libdw) have a stable API and are
backwards ABI compatible they, and the elfutils tools, do depend on each
others internals, and on internals of libelf to provide their interfaces.
So they should always be upgraded in lockstep when packaging the tools
and libraries separately. For one example of how to do that, see the
config/elfutils.spec.
Some notes:
- old GNU ld's behavior wrt DSOs seems to be severely broken.
y.o reference foo()
y1.o defines foo(), references bar()
y2.o defines bar()
libbar.so defines bar()
Running
gcc -o y y.o -lbar y1.o y2.o
uses the bar() definition from libbar.so and does not mention the definition
in y2.o at all (no duplicate symbol message). Correct is to use the
definition in y2.o.
y.o reference foo()
y1.o defines foo(), references bar()
y2.o in liby2.a defines bar()
libbar.so defines bar()
Running
gcc -o y y.o -lbar y1.o -ly3
has to use the definition in -lbar and not pull the definition from liby3.a.
- the old linker follows DT_NEEDED entries and adds the objects referenced
this way which define a symbol which is needed as a DT_NEEDED to the
generated binary. This is wrong since the DT_NEEDED changes the search
path in the object (which is breadth first).
- the old linker supported extern "C++", extern "java" in version scripts.
I believe this implementation is severely broken and needs a redesign
(how do wildcards work with these languages*?). Therefore it is left
out for now.
- what should happen if two sections in different files with the same
name have different types and/or the flags are different
- section names in input files are mostly irrelevant. Exceptions:
.comment/SHT_PROGBITS in strip, ld
.debug \
.line |
.debug_srcinfo |
.debug_sfnames |
.debug_aranges |
.debug_pubnames |
.debug_info |
.debug_abbrev |
.debug_line |
.debug_abbrev > DWARF sections in ld
.debug_line |
.debug_frame |
.debug_str |
.debug_loc |
.debug_macinfo |
.debug_weaknames |
.debug_funcnames |
.debug_typenames |
.debug_varnames /
Sections created in output files follow the naming of special section
from the gABI.
In no place is a section solely identified by its name. Internal
references always use the section index.
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。