var module = new binaryen.Module();

var fileIndex = module.addDebugInfoFileName("module.c");

console.log(module.getDebugInfoFileName(fileIndex));
console.log();

var expr = module.i32.const(1);
var body = module.block("", [
  expr
], binaryen.i32);

var func = module.addFunction("main", binaryen.none, binaryen.i32, [], body);

module.setDebugLocation(func, expr, fileIndex, 1, 2);
module.setDebugLocation(func, body, fileIndex, 0, 3);

var output = module.emitBinary("module.wasm.map");
assert(module.validate());

function dumpBinary(buffer) {
  var hex = [], o, b, h;
  for (var i = 0; i < buffer.length; ++i) {
    o = i.toString(16);
    while (o.length < 3) o = "0" + o;
    if ((i & 15) === 0) hex.push((i ? "\n" : "") + o + ":");
    if ((b = buffer[i]) >= 0x21 && b <= 0x7e)
      h = String.fromCharCode(b) + ' ';
    else if ((h = b.toString(16)).length < 2)
      h = "0" + h;
    hex.push(h);
  }
  console.log(hex.join(" "));
}

dumpBinary(output.binary);
console.log();
console.log(output.sourceMap);