This is only a side point, but I wrote objdump (any objcopy) mainly as a debugging aid when starting to implement bfd. We included it for people porting bfd, rather than as a normal user program.
Thus it is weird, though gratifying, to see it actually used for real work. In fact I use it instead of nm, size, etc but I thought I might be the only one!
Thanks for writing and publishing objdump. I use it often along side of gcc's assembly view. I find the output handy for taking notes, and the format is simple for scripts to parse.
Interesting, as objdump has long been an indispensable tool... [Is there any other way with the standard GNU toolset to conveniently disassemble a random object/binary?
Gdb can of course, but isn't very convenient for doing whole-program disassembly...]
objdump has been an invaluable part of my debugging toolset over the years, and objcopy has been an indispensable part of the build pipeline we had for the Playstation 3.
(Shameless plug:) It would be great if someone would leverage the pretty successful technique (i.e. found a couple hundred bugs in GCC and Clang) we recently devised to detect miscompilations, Compiler Validation via Equivalence Modulo Inputs[1], to test ARM compilers.
In short, the idea is: profile a program running on a specific input; mutate the unexecuted code with respect to that input; compile and execute the mutated program and expect the output to be identical given the input.
Over a year, I'd say. We'd run the test infrastructure for ~11 months on a couple machines when we submitted the paper.
That's not indicative of much though, as the actual timelines for writing papers can be driven by conference deadlines more than the works themselves (when talking about granularity of six months to a year).
We have not, so far. It's a bit difficult to package up as it mostly consists of a bunch of (potentially environment dependent) shell scripts with a transformation program. Shouldn't be too hard to replicate, as the total LOC is pretty low.
Do you have a specific use for it? If so, let me know about it, as I might be able to try lobbying for packaging and releasing the code or work something out.
Very nice. One suggestion, I found the abstract and introduction difficult to understand, and only got the real point by page 3. I would add something clearer in the abstract and/or introduction, such as:
"Static analysis is used to construct alternative versions of the program, that give identical outputs for a given subset of inputs I. The alternative programs are compiled and executed, and we test whether they do actually give the same outputs as the original program, on the input data I. By restricting to a subset I of inputs, a greater variety of alternatives can be produced, than if the alternatives had to be identical to the original program for all inputs."
What's also interesting is running FreeSWITCH on a RPi. Last time I tried to compile FS on a i686/512MB host [1], GCC OOM'd during linking. And I can't imagine cross-compiling, mostly because I just spent a day fighting an APR cross-compile [2] from x86 to ARM.
But I digress.. awesome bit of detective work in the article. Compiler bugs are really frustrating/tedious to root out, especially if you don't usually muck around with asm.
[1] Underpowered according to FS's own recommended specs.
[2] FS also uses APR, but I'm just bitter that it's virtually impossible to cross-compile the Apache Portable Runtime out of the box...
19 comments
[ 3.6 ms ] story [ 71.9 ms ] threadThus it is weird, though gratifying, to see it actually used for real work. In fact I use it instead of nm, size, etc but I thought I might be the only one!
objdump has been an invaluable part of my debugging toolset over the years, and objcopy has been an indispensable part of the build pipeline we had for the Playstation 3.
In short, the idea is: profile a program running on a specific input; mutate the unexecuted code with respect to that input; compile and execute the mutated program and expect the output to be identical given the input.
[1]: http://mehrdadafshari.com/emi/paper.pdf
That's not indicative of much though, as the actual timelines for writing papers can be driven by conference deadlines more than the works themselves (when talking about granularity of six months to a year).
Do you have a specific use for it? If so, let me know about it, as I might be able to try lobbying for packaging and releasing the code or work something out.
"Static analysis is used to construct alternative versions of the program, that give identical outputs for a given subset of inputs I. The alternative programs are compiled and executed, and we test whether they do actually give the same outputs as the original program, on the input data I. By restricting to a subset I of inputs, a greater variety of alternatives can be produced, than if the alternatives had to be identical to the original program for all inputs."
But I digress.. awesome bit of detective work in the article. Compiler bugs are really frustrating/tedious to root out, especially if you don't usually muck around with asm.
[1] Underpowered according to FS's own recommended specs.
[2] FS also uses APR, but I'm just bitter that it's virtually impossible to cross-compile the Apache Portable Runtime out of the box...
I've heard people are able to get a few concurrent calls on the Raspberry Pi, and at least one person turned it into a physical phone.
http://www.switchpi.org/ http://www.switchpi.org/switchpi-proto-lcd-with-dtmf-pad-liv...