Paris, generational inequality, vacant,

Paris, generational inequality, vacant,

libabigail aka C++ Instrumentation and Analysis


Background

Libabigail is shorthand for the alternative, which just so happens to be a bit of a mouthful: “GNU Application Binary Interface Generic Analysis and Instrumentation Library.”

This is a current compiler/language research topic to provide a serialized XML form of C++11 sources as compiled by GNU g++, and a way of looking at the data produced. This data can be parsed to more accurately determine ABI compatibility, to better understand code additions and changes and how these change the exported interface, to examine and prototype how C++11 language usage determines linkage, etc.

Discussions about this functionality started at the “C++ ABI BOF” at the GNU Tools Cauldron 2012 Prague. This work was created at Red Hat, by Benjamin Kosnik, Jason Merrill, and Dodji Seketeli. Some updates at 2013 Cauldron. See “Cauldron 2013 GCC ABI BOF.”

Development sources are written in mixed C++2003/C++11, hosted in git, based on GCC trunk, and tracking what will to be gcc-4.9.0. The branch is administered by Dodji Seketeli.

Please feel free to try it out, but know that the state is experimental and quite raw.

Feedback and assistance is welcome.

Starting from a git working tree as described in GitMirror, add the libabigail repository as follows:

git checkout -b libabigail origin/libabigail

To stay up to date, use:

git pull


Overview

How is this expected to be used? First, a libabigail top-level directory is either added to the GCC sources or compiled as a first step and put into some PREFIX directory. The GNU C++ compiler, g++, is configured to use this new library with:

configure .. --with-abigail=$PREFIX

Thus configured, the C++ front end is built, installed, and used as the primary compiler. All sources are compiled with an additional flag, -fdump-abi.

So, this command:

g++ -c -fdump-abi somefile.cc

Creates two files:

  • somefile.o

    The object file

  • somefile.cc.bi

    The XML instrumentation file


API/ABI

basics

Toplevel namespace is abigail.

The interface header files in libabigail:

abg-ir.h
abg-corpus.h

Doxgen is used to document the sources: try make html to generate, and look in libabigail-build-dir/doc/api/html/index.html to read it.

And then the binary interface is in libabigail.so.

notes

Each object file is compiled to a translation_unit. The sum of all translation_units is a corpus.

Compiler-generated files are read as serialized input to a translation_unit and de-serialized. And any modified form is written to an output file in serialized form.

The interface to the C++ intermediate representation is best viewed in the class documentation.

Opinions and Wild Guesses

1. Some formatting tips.

– classes “read” as types, data, members functions. In that order.

– doxygen gives feedback on the state of the doxygen parse in the form of a log, as you run “make html.” Read this log: doxygen is a fuzzy parse. There are formatting things you can do to make it better. Do them. It’s easier to fix up these errors then figure out why the generated HTML is poor.

2. Use of shared_ptr is intriguing.

There are not really a lot of existing usage patterns for std::shared_ptr in libstdc++ (in C++11 , , ). If you look at the page of boost idioms for shared_ptr usage:

http://www.boost.org/doc/libs/1_54_0/libs/smart_ptr/sp_techniques.html

One notices that there’s not a lot of use of shared_ptrs in interfaces. Yet in libabigail, that is very common. I’m curious about this style question.

And most usage is up for debate, see this stack overthow discussion about using shared_ptrs as function arguments. Should the parameters be const reference or just shared_ptr? And another.

Some interesting thinking from microsoft on shared_ptr usage.

3. Use of virtual binary operators is odd.

The old adage is that operators cause havoc in overload resolution. These are binary operators, but the stigma lingers. A vague feeling is not the same as something definite that’s a hard no. It’s more like the pirate code than a strict coding convention or hard rule. I would say that if you ever start to see strange bugs due to overloading, consider making these (non-operator) functions.

Otherwise, do it.

199x Austin

Proteus VIP cards, 1995, CJ Manetta (hand lettering/encasement Daniel Foreman)

A surprisingly large number of photos and scans of printed material from the electronic music scene in Texas during the 1990s are archived on Facebook. Above are two that are not.

The Facebook archive is interesting to me, for many reasons.

Of the archived material, many objects originated from a partnership of myself, CJ Manetta, and Shane Herman as part of various collectives: phreaks united, get groovy, alien technology. Pre-press and offset printing on a Heidelberg GTO was done at Powell Offset Services on South Lamar in Austin. (With some pre-press done at the Bureau).

Some of these objects still fascinate, after fifteen or more years. I retain an eccentric and incomplete collection of these objects, carefully placed into a portfolio and forgotten, only brought out to be moved to the next location.

Favorites, to this day:

proteus planetary peek-a-boo front

proteus rich-e-rich (crazy-hi-res duotone!)

proteus acid jazz (Emigre Gnarly)

proteus copyright freedom card (top three, earliest copyfreedom object, waaay ahead of its time)

proteus you + me = unstoppable (top three)

proteus hardkiss (top three)

Things I’ve not seen in fifteen years but rather enjoyed:

proteus FUSE font object

proteus kiss it goodby (hotness! xerox hero, do not have)

proteus, some japanese texture back (do not have)

proteus aries children unite + free b 4 11 (do not have, who saved free b 4 11 cards???)

proteus aaron siskind flower child photomontage

barefoot, original flyer

barefoot dirty foot flyer

+space free 2 be

outlaw spiral jetty

g9 (so hot!!)

renouveau (love this photoshoot)

proteus original flyer (jon littell)

planetary peekabo remix

radiance teasers (blast from the past)

Production wise, there is a consistent use of high-resolution film from Linotronic and Agfa imagesetting machines, repeated use of silver and bronze metallic inks, repeated  deviations from canonical color process ink colors, simulated 4 color printing via 3 color blending (CMY)  + metallic, Japanese and Mexican-influenced two and three color paletes, super-fine halftone screens, printing with metallic shades and or varnish.

Many of these objects share some common production characteristics, with several having the same production details (papers, colors unique to job) indicating that they where all small pieces cut down from a much larger print run.

Description wise, there is notable use of metallic, heavy on the blue, love of orange, photomontage and fades, typographic treatment that can best be characterized as small, experimental, veering between legibility and the atmospheric. Line love: hairlines, massed vector objects, elaborate use of non-traditional typographics. Japanese backgrounds and textures, Mexican and American photographic influences including Siskind, Bravo by way of Dada/Bauhaus/Surrealism. Original photographic content is often staged, subjects disassociated from background or foreground, shadows mutated, and overall composition may incorporated found images, used with and without permission. Text + text + image + image.

There was a dimensionally-huge amount of labor needed to produce each one.

What is it like, to see things that were given away on the street and left at coffee bars a decade or more ago resurface on the internet years later? What are these objects to me? Part experimental offset printing job, part beer-money job, part computer graphics experiment? Part social experiment?

And to other people? There was one time, dropping off a box of freshly printed and cut flyers at a club on sixth street in Austin at the golden hour, I was sitting with the owner at the golden hour before the crowds arrived and it became a madhouse, the two of us and a bartender at the other end of the bar, prepping. The owner set two aside from the stack. The woman from the French restaurant across the street collects these, he said. It struck me as absurd at the time, collecting a free flyer. Of course, even the concept of French cuisine was lost to me at this point in my life. But of course, I too had a stash. Which was then edited ruthlessly over the following years. Throwing away that film was painful, so painful. That output was fought for, inch by inch.

It’s kind of amazing to think that any of this is around to look at, fifteen years later.

I find many are still satisfying to look at as static visual objects, in real life. The originals often had metallic ink or semi-transparent varnish, and shimmer or shine in direct light: this subtlety is lost on-line. Some of these objects now only exist in a virtual state, digitized, and are retrieved from the long forgotten past via scanners in unnamed locations digitizing private archives. To the data thieves!

These pure-digital ones are even more interesting. The digital replicant is at least 90% of the original, considering the original is really a copy, one of 800, 1000 objects printed at once and given out, for free. But then the pure-digital gets 10%, 20%, a fold or a crease via being an original object in some context, or passed through some lens, additional metadata to ponder.

Just look at the creases on the flyers: yeah, some of those were too big, clearly. This one is torn. This one looks like it was laid out on a bed and snapped with a camera phone. And see how many of this one there are! Is it true that some of the +space flyers have been pulled, and are no longer on-line? And the same with the outlaw? Who keeps adding to this, what is the rate of change?

It is interesting to see every single kind of free before 11 card represented, but no VIP ids, reassuring to see incriminating photos of people in clubs late are indeed kind of timeless, segue so seamlessly into the contemporary genre (Facebook). The total population of the out-late-at-night is huge, filled with people I don’t know or recognize: there was a whole other reality, perhaps several parallel universes.

What was saved? What remains obscured? What was duplicated? What was re-used, instantly? Post-production, hazily. Fascinating to see the flyer re-mixes from years ago, to see some of the club kid flyers re-purposed as marginalia in gossipy rumour sheets. Who knew? Not me in 1995.

Much of the visual archive of this period in the recent past is inaccessible. This was not popular culture, even though traditional print media like offset lithography were used for production.

In terms of software and art archiving, preserving these printed objects is pain-free. Like saving a magazine, or a wedding invitation. There also exists an archive of digital precursor material, degenerated and made lame over time. Digital nitrate. Re-generating the original object now is between highly improbable crossed with nightmare divided by an oil slick. Many used custom fonts, generated with proprietary programs (Fontographer) long out of useful service. The generated font files, on file, do not work on contemporary linux and macintosh systems using opentype fonts (OTF). The proprietary layout program, Freehand, was last updated in 2003. The downloaded binary release does not run on current macintosh hardware/software. The archived layout files, on file, cannot be opened.

What to think, fifteen years later?

Time has gently washed the previous years, such that as I swirl the water around, the gold glints in the sunlight. The meetings are always remembered with the best light possible, for instance: golden hours, sunsets, at daybreak. Wasn’t it fun? Along the way, did somebody actually collect these things? Apparently so. And save them, year after year? Apparently so. The distributed archive on Facebook is the canonical archive. Were the bulk of these really saved by Jeff Tice’s mother? Too fucking cool. Was this one of those cleaning-out-the-garage compromises, scan this and then pitch it? It’s the last we’ll ever see of the visual culture of 1990s Texas raves, except for some private collections, moldering in shoeboxes all across the southwest, or stuffed into slim envelopes on a San Francisco bookshelf.

Too fucking cool.

See:

199x SF