- User Since
- Aug 21 2014, 1:57 PM (287 w, 3 d)
Fri, Feb 21
Wed, Feb 19
Tue, Feb 18
Fri, Feb 14
remove parens, ## comments, change partition index.
I've been told that comments in tests should start with ##.
Thu, Feb 13
Update variable names.
make sure __tls_get_addr doesn't already exist before creating it
Wed, Feb 12
Tue, Feb 11
Fri, Feb 7
Jan 21 2020
Jan 20 2020
Jan 17 2020
Update code to check for the Musl environment.
Jan 15 2020
Jan 14 2020
- Verify the absence of relocations in the executable.
- hexagon may call tls_get_addr but the name is not explicitly stated in the ABI. The internally maintained linker will create the symbol to call which is generally "tls_get_addr". There are instances when it would not be "tls_get_addr" such as when a user built a static executable using objects built -shared -pic. In such a case the internal linker would create a stub called __hexagon_ie_tls_get_addr and call it. LLD for hexagon would not support doing this until some design could be agreed upon.
- Don't check explicit addresses in GOT.
- Added the check for the closing brace.
Jan 10 2020
Jan 9 2020
Jan 8 2020
Address testcase issues.
Jan 7 2020
Move hasStaticTlsModel from R_GOT case to the suggested R_GOTPLT case.
Add config->hasStaticTlsModel in R_GOT case.
Jan 6 2020
All hexagon work on binutils/gcc was done during the GPLv2 timeframe. The downloadable linker I'm referring to is a branch from the old mclinker project.
The binutils port was never made public. The internal linker can be downloaded with a click-thu license agreement, the same one needed to get to the ABI spec. That linker is a branch of mclinker.
- Is -pie and -shared used a lot on Hexagon?
-pie isn't but shared is.
- How is Hexagon's dynamic loader ld.so implemented? Is the source code available?
The code isn't yet available from Qualcomm but we have a port of MUSL and I don't think much more than adding the #defines to reloc.h and the files dlsym.s/tlsdesc.s was done. Nothing weird for hexagon.
- How is TLS going to be used on Hexagon?
There isn't anything out of the ordinary in how it is used and it is necessary for C++11 support.
- Is text relocations acceptable?
No. The reason I needed to add the -z notext in the -shared test was because technically the wrong relocations were being used. I did that so that I could condense the IE patch into a single file testcase.
- Is it really impossible to use a PC-relative GOT address load on Hexagon? R_GOT on EM_386 has severe limitations. EM_X86_64 fixed these issues. (I don't want to see newer architectures behave like it.)
The R_HEX_IE_GOT... are used for shared/pic code. As far as I know the R_HEX_IE_32_6_X/16_X.. are used only when building static code. The ABI has examples for both of these IE static and IE for PIC.
I shall also mention that this is unfortunate.bool canRelax = config->emachine != EM_ARM && config->emachine != EM_RISCV;
RISC-V TLS has several problems. Its design/implementation was copied from ARM/MIPS. The two architectures really do not provide the best reference for TLS implementations. The RISC-V TLS implementation has several defects. I've reported a few bugs on the binutils bugzilla.
Update Check names.
Jan 3 2020
merge ie and iegot relocations
put the testcase into just a single file.
Jan 2 2020
This is fine with me. This patch doesn't remove the objdump checks are both necessary?
Change testcase name to hexagon-tls-le.s
Dec 23 2019
Thanks! Sorry for the breakage, I enable all targets or just hexagon but never not all targets and not hexagon. I will create a solo config of a different architecture and consider that in the future.
Dec 20 2019
Dec 16 2019
Dec 13 2019
OK, Yes Fuchsia is a good example. Using that pattern
Dec 12 2019
make check for lld more generic.
Dec 10 2019
Dec 9 2019
remove redundant comments
Dec 6 2019
Dec 5 2019
Remove quotes around check-not.
Dec 2 2019
Nov 13 2019
I get a build error with this patch (b288f7d6bb8fdd21d27ba755302db194c181fdaf) It looks like what got committed is a little different from above. The committed patch partially changed updateCallSiteInfo with moveCallSiteInfo
Nov 5 2019
Can one of the reviewers push this? I lost my commit access, waiting for it to be restored.
Oct 28 2019
Remove Entry: from testcase
Oct 25 2019
Forgot to remove Address/AddressAlign
Remove +sh_offset update testcase to include a test for ShOffset > file size.
Oct 24 2019
Oct 22 2019
Rename and update test.
Oct 21 2019
Changed getContents to return a zero-length array when the section type was NOBITS.
Oct 18 2019
Oct 15 2019
Oct 14 2019
Update and rename testcase.
Oct 11 2019
Update test case.
Oct 8 2019
Oct 7 2019
Add a new test similar to riscv-plt.s. Update hexagon-shared.s to test -Bsymbolic and .hidden.
Sep 27 2019
Sep 25 2019
Any comments, ABI is here:
Sep 16 2019
Aug 30 2019
Aug 29 2019
Aug 22 2019
Generally, the non-extended branch relocations are never found in objects but one could manually generate them. The rules work like this:
- if (p0) jump external // The assembler picks the relocation, either R_HEX_B15_PCREL or R_HEX_B15_PCREL_X in practice when the label is external it will pick the _X version
- if (p0) jump #external // The programmer says I want the non-extended version, R_HEX_B15_PCREL will be used.
- if (p0) jump ##external // The programmer says I want the extended version, R_HEX_B15_PCREL_X will be used.
I accidentally moved R_HEX_6_PCREL_X, I only intended to update R_HEX_B15_PCREL_X/R_HEX_B9_PCREL_X.
Aug 21 2019
Aug 19 2019
Aug 16 2019
Aug 15 2019
Update filenames in testcase.