00:47
ggoebel114 joined
01:25
cognominal joined
01:26
cognominal joined
01:27
cognominal joined
01:28
cognominal joined
01:29
cognominal_ joined,
cognominal__ joined
01:30
cognominal_ joined
01:31
cognominal_ joined
01:32
cognominal joined
01:33
cognominal_ joined
01:34
cognominal_ joined
01:35
cognominal joined
01:36
cognominal joined
01:37
cognominal joined
01:38
cognominal joined
01:39
cognominal joined
01:40
cognominal joined
01:41
cognominal joined
01:42
cognominal joined
01:46
cognominal joined,
cognominal_ joined,
cognominal joined,
cognominal_ joined
01:47
cognominal joined,
cognominal_ joined
01:48
cognominal_ joined
01:49
cognominal_ joined
01:50
cognominal_ joined
01:51
cognominal joined
01:52
cognominal joined
01:53
cognominal joined
01:54
cognominal joined
05:37
domidumont joined
05:41
domidumont joined
06:00
domidumont joined
06:37
brrt joined
06:48
zakharyas joined
|
|||
brrt | ok, i may have this One Weird Trick which makes assembly somewhat cross-platform | 09:38 | |
you know how OS X (and perhaps other BSDs) likes its C-visible symbols to be prefixed with underscore? | 09:39 | ||
a 'function' is just a globally exported label in assembly | |||
anyway, linux does not like its C-visible symbols prefixed with an underscore | 09:40 | ||
with linux, i mean 'the linux linker' | |||
and with os x, i mean 'the osx linker' | |||
windows, idk | 09:41 | ||
nothing whatever stops me from inserting two labels, one with an underscore, and one without | 09:42 | ||
timotimo | m) | 09:46 | |
brrt | and nothing also stops me from inserting an earlier label for the windows version | 09:48 | |
timotimo | if there's two labels with the same name, windows chooses the earlier one, linux chooses the later one? | 09:49 | |
brrt | no, i conditionally-compile a call to the windows version or the posix version | 09:53 | |
so we get: _foo_posix, foo_posix, and foo_win32 | 09:54 | ||
timotimo | oh, ok | 09:56 | |
how do you deal with different calling conventions "outward"? | |||
brrt | hmm, i don't even know if VSC++ accepts the same kind of assembly as gcc | 09:57 | |
or clang | |||
this is for the stack-walking routine | |||
so we're never calling outward | |||
timotimo | oh, ok | ||
brrt | lunch & | 10:02 | |
12:15
colomon joined
12:21
cognominal joined
|
|||
lizmat | liblfds.org # interesting for Moar ? | 12:37 | |
hmmm... news.ycombinator.com/item?id=11805728 | 12:38 | ||
12:40
brrt joined
|
|||
brrt | lizmat: looks interesting though | 12:40 | |
my other 2 cents: we have 99 problems, and lock-free data structures aren't necessarily a solution to a problem that i would know (now) | 12:41 | ||
nwc10 | github.com/MoarVM/MoarVM/issues -- 48 Open | 12:42 | |
[Coke] | nwc10: www.google.com/#q=99+problems | 12:43 | |
jnthn | I'm sure some RTs are Moar's fault too :P | 12:44 | |
nwc10 | yes, I know it's a meme | ||
brrt | oh, lord | 12:46 | |
i had no idea we had so many GH issues | |||
[Coke] | don't look at the rakudo queue, then. :| | 12:47 | |
brrt | best not | 12:48 | |
what do we think of this one: github.com/MoarVM/MoarVM/issues/372 | 12:49 | ||
[Coke] | since moarvm also installs files, shouldn't it also be asking for moarm to install there too? | 12:50 | |
brrt | probably.... | 12:54 | |
packaging o.O | |||
[Coke] | there are 5 PRs for moarvm (dating back to last september) that need to be rejected or merged. | 13:03 | |
jnthn | One of them iirc is awaiting testing on 32-bit | 13:04 | |
nwc10 | 32-bit what? | 13:06 | |
jnthn | Whatever I think | 13:07 | |
nwc10 | OK. I think I had all the flags for an -m32 build in my shell history at one point... | ||
ie x86_64 host generating x86 objects | |||
brrt | i'm going to go ahead and not think about it today | 13:09 | |
packaging, i mean | |||
[Coke] | jnthn: do we maybe want a 32bit tag? | 13:11 | |
nwc10 | $ file /home/nicholas/Sandpit/moar-32/bin/moar | 13:32 | |
/home/nicholas/Sandpit/moar-32/bin/moar: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.18, not stripped | |||
I'd only build MoarVM 32 bit previously | |||
re-run with MoarVM master | 13:33 | ||
now building NQP with it | |||
spectest fine, but 3 nativecall tests fail | 14:08 | ||
however I was building with -funsigned-char | |||
so whilst they *are* bugs, they may not be bugs that actually affect x86 | 14:09 | ||
1 is related to (seemingly) assuming that char is signed | 14:29 | ||
t/04-nativecall/11-cpp.t and t/04-nativecall/13-cpp-mangling.t seem to be more general | |||
ilmari | how about x32? | 15:23 | |
which is x86_64 code with 32bit ints/longs/pointers | 15:24 | ||
nwc10 | I don't know if that gcc can do that | 15:28 | |
ilmari | -mx32 | ||
supported on 4.9 at least | |||
nwc10 | as: unrecognized option '--x32' | 15:29 | |
"my" machine is not my machine, so I'm not root | |||
however I'm root on my work desktop | |||
so will try that tomorrow | |||
ilmari installs libc6-dev-x32 and tries | 15:30 | ||
configure: error: cannot run C compiled programs. | 15:31 | ||
$ grep _X32_ /boot/config-$(uname -r) | |||
CONFIG_X86_X32_DISABLED=y | |||
oops | |||
presumably requires a command line parameter | |||
ilmari tries it on his sid vm instead | 15:32 | ||
lots of warning: cast from pointer to integer of different size [-Wpointer-to-int-cast] | 15:39 | ||
nwc10 | oh? do sizeof(int) and sizeof(void *) differ on x32? | 15:40 | |
ilmari | it's casting pointers to/from MVMuint64 | ||
nwc10 | or at least, sizeof(something we didn't expect) and sizeof(void *) | ||
aha. oooh. | |||
ilmari | it doesn't seem to be propagating CFLAGS to the 3rdparty stuff | 15:42 | |
/usr/bin/ld: i386:x86-64 architecture of input file `3rdparty/dyncall/dyncall/libdyncall_s.a(dyncall_api.o)' is incompatible with i386:x64-32 output | |||
nwc10 | I did something like this: | 15:43 | |
Configure.pl --no-jit --prefix=/home/nicholas/Sandpit/moar-32 --cc=ccache\ /usr/local/gcc49/bin/gcc\ -Wl,-rpath=/usr/local/gcc49/lib32\ -m32\ -funsigned-char --ld=/usr/local/gcc49/bin/gcc\ -Wl,-rpath=/usr/local/gcc49/lib32\ -m32 --debug --optimize=0 --enable-jit | |||
(that was the one with -funsigned-char) | |||
and didn't do a CFLAGS | |||
probably means I'm working around what is a bug | 15:44 | ||
ilmari | only dyncall gets it wrong | 15:52 | |
oh, git clean -xfd doesn't descend into submodules | 15:59 | ||
submodules-- | 16:00 | ||
git submodule foreach git clean -xfd # to the rescue | 16:01 | ||
works with --cc='gcc -mx32' --ld='gcc -mx32' | 16:02 | ||
Segmentation fault | 16:04 | ||
Makefile:223: recipe for target 'gen/moar/stage1/nqpmo.moarvm' failed | |||
timotimo | oh my :| | ||
ilmari | fsvo "works" in "builds" | ||
does the JIT support x32? | 16:06 | ||
timotimo | no | ||
it ought to turn itself off when it sees 32bit builds | |||
oh, that's only for mac | |||
for linux and windows it relies on a define being set, i think? | 16:07 | ||
ilmari | I see there's an --enable-jit, but no --disable-jit | ||
ah, it's --no-jit | |||
--no-jit makes nqp build and tests mostly pass | 16:10 | ||
t/nqp/060-bigint.t ..................... Failed 2/89 subtests | |||
timotimo: how does it detect 32bit-ness? | 16:11 | ||
timotimo | dunno | ||
ilmari | x32 is x86-64 ISA (so extra registers and stuff) but 32bit ints/longs/pointers | ||
timotimo | we might not handle that at all | ||
the reason we don't have x86-64 is because it has too few registers to make us happy | 16:12 | ||
16:12
tomboy64 joined
|
|||
tomboy64 | but even when specifying --has-libffi, the logic in Configure.pl 1. tests for libff, 2. tests for dyncall, 3. tests for nativecall, all three exclusively. and during the build itself, 3rdparty/dyncall is accessed nevertheless. | 16:12 | |
this happens when i install libffi + dyncall + rm 3rdparty/dyncall | 16:13 | ||
ilmari | huh? you mean the reason you don't have x86-32? | ||
timotimo | sorry, yes. | ||
geekosaur | was wondering there... | ||
ilmari | well, x32 is meant to fix that, without the extra memory pressure caused by wider types | 16:14 | |
timotimo | right | ||
we'd probably have to write a second .dasc for x32 | |||
geekosaur is still a bit bemused by x32, since when x86-64 was added people asked if this would be done as well and were given fairly firm "no"s | 16:15 | ||
ilmari | people changing their minds in the face of evidence and experience?! shocking! | ||
geekosaur | "why would anyone want that?" (list of reasons including more registers and lower memory pressure) "but you should just run in 64 bit if you want that" | ||
frm some segments of the open source community, yes, changing minds in the face of evidence is *very* shocking. sadly. | 16:16 | ||
nwc10 | clearly the folks answering "but you should just run in 64 bit if you want that" had never exposed themselves to 64 bit Solaris | 16:27 | |
very few things on Solaris were 64 bit | |||
because, well, why burn twice as much memory (and cache) if you didn't need the address space? | |||
(and here I'm only repeating what I was told when I asked the question) | |||
I think PPC and PPC64 were roughly the same story | |||
ilmari | the key difference is that both ppc and sparc have decent amounts of registers in 32bit mode | 16:28 | |
nwc10 | yes, exactly | ||
tomboy64 | okay, let me rephrase my initial question. are libffi and dynlib excluding each other as dependencies? | 16:43 | |
timotimo | we will only build moar with a single one of them | 16:44 | |
tomboy64 | alright, thanks | ||
geekosaur | yes, iirc most of them were i386 only and couldn't imagine such occurrences | 17:08 | |
on the flip side, their past experience included memory models, and I can see why someone might not want to reintroduce that insanity | |||
(the key difference there being that you still have sane memory management with x32) | |||
ilmari | x32 is a new ABI, so they can ditch a lot of cruft | 17:09 | |
17:39
ggoebel115 joined
17:41
domidumont joined
17:52
brrt joined
|
|||
brrt | yeah, i'm not so fond of the whole x32 idea | 17:53 | |
tbh | |||
18:33
TimToady joined
|
|||
nine | I cannot imagine there being many users of x32 anyway. | 19:12 | |
nwc10 | we might have used it at NETBANX. We switched our Perl build back from 64 to 32 bits, because we figured that on the hosts running the web servers, what we had were a lot of processes wating on "the backend" (read, banks are slow at AUTHs), so what mattered more was how many we could keep in RAM easily than how fast they actually were | 19:16 | |
but back then x86 was what the toolchain offered | |||
the hardware was all x86_64 | |||
Amex is particularly slow. But I have some confidence that that's because they are actually running decent fraud checking. | 19:17 | ||
not because they are crap. | |||
er, by banks I think I techncailyl mean "merchant aquirers" but I've probably forgotten all the right terms. | 19:19 | ||
and I can't spell | |||
20:50
brrt joined
|