Tiny X11 Trans Flag by Suricrasia Online [web] | ||||||||
---|---|---|---|---|---|---|---|---|
|
||||||||
|
popularity : 55% |
|||||||
alltime top: #17490 |
|
|||||||
|
||||||||
added on the 2018-12-20 03:16:10 by blackle |
popularity helper
comments
_b
rulez added on the 2018-12-20 08:27:20 by visy
<3
A nice flag for a nice OS :)
Ah, oops, I'll fix that (unless you're fast enough to open a merge request).
In other news: when system libs are compiled with SSE4 (or was it AVX2?), the process will segfault in XauReadAuth (libxau.so), line 105 in AuRead.c. (This happens at least on any Arch system.)
Even though the pointers are correct (no malloc messing things up), the assignment is compiled as an SSE4/AVX2 "block transfer", which needs both the source and the destination pointers to be aligned to 16 bytes. ("block transfer" is ARM-speak for stm/ldm, so it probably isn't exactly the same, but I'll just use it here.)
The SUSv4 ELF spec states that, at a process entry on x86_64, rsp mod 16 will be 8 (great idea), while most C compilers (i.e. GCC and Clang) assume proper stack alignment for these block transfers (that is, 16-byte aligned). The 'local' variable in AuRead is on the stack, with borked alignment, and thus the assignment crashes.
Adding this line at the very beginning of _start should fix this:
Luckily I've already seen this bug once, because otherwise I'd still be pulling out my hair.
In other news: when system libs are compiled with SSE4 (or was it AVX2?), the process will segfault in XauReadAuth (libxau.so), line 105 in AuRead.c. (This happens at least on any Arch system.)
Even though the pointers are correct (no malloc messing things up), the assignment is compiled as an SSE4/AVX2 "block transfer", which needs both the source and the destination pointers to be aligned to 16 bytes. ("block transfer" is ARM-speak for stm/ldm, so it probably isn't exactly the same, but I'll just use it here.)
The SUSv4 ELF spec states that, at a process entry on x86_64, rsp mod 16 will be 8 (great idea), while most C compilers (i.e. GCC and Clang) assume proper stack alignment for these block transfers (that is, 16-byte aligned). The 'local' variable in AuRead is on the stack, with borked alignment, and thus the assignment crashes.
Adding this line at the very beginning of _start should fix this:
Code:
asm volatile("sub $8, %rsp\n"); // align the stack
Luckily I've already seen this bug once, because otherwise I'd still be pulling out my hair.
Yup! Cool <3 Thx 4 da flag!
Looks nice, what gcc version is used to build this? Version 5.4.0 did not recognize ‘-fno-plt’.
My distro is way behind it seems :)
When I tried to build without ‘-fno-plt’ I noticed that the Section-Header-Stripper directory was empty. Do I have to do some git magic to pull down the missing modules?
Thanks, I do get a segfault with gcc 5.4.0 though so I probably have to replicate your setup.
id like to express my support for the personality disordered
"thanks"
❤️
lists containing this prod
submit changes
if this prod is a fake, some info is false or the download link is broken,
do not post about it in the comments, it will get lost.
instead, click here !