Index: contrib/arch/hadlbppp.py
===================================================================
--- contrib/arch/hadlbppp.py	(revision d7365604e74bfcc8375a97c27ceb05da6e48e53c)
+++ contrib/arch/hadlbppp.py	(revision af6cad4bb7b7a98c908b368ca1dd891db173aae8)
@@ -409,5 +409,5 @@
 	return result
 
-def dump_frame(frame, outdir, var, archf):
+def dump_frame(directed_binds, frame, outdir, var, archf):
 	"Dump Behavior Protocol of a given frame"
 	
@@ -443,8 +443,19 @@
 			iface = get_iface(provides['iface'])
 			if (not iface is None):
+				binds = directed_binds['%s.%s' % (var, provides['iface'])]
+				if (not binds is None):
+					cnt = len(binds)
+				else:
+					cnt = 1
+				
 				if ('protocol' in iface):
-					protocols.append(extend_bp(outname, iface['protocol'], iface['name']))
+					proto = extend_bp(outname, iface['protocol'], iface['name'])
+					for _ in range(0, cnt):
+						protocols.append(proto)
+				
 				for protocol in inherited_protocols(iface):
-					protocols.append(extend_bp(outname, protocol, iface['name']))
+					proto = extend_bp(outname, protocol, iface['name'])
+					for _ in range(0, cnt):
+						protocols.append(proto)
 			else:
 				print "%s: Provided interface '%s' is undefined" % (frame['name'], provides['iface'])
@@ -639,4 +650,6 @@
 			break
 	
+	directed_binds = direct_binds(flatten_binds(binds, delegates, subsumes))
+	
 	outname = os.path.join(outdir, "%s.archbp" % arch['name'])
 	if ((opt_bp) or (opt_ebp)):
@@ -648,7 +661,5 @@
 	
 	for inst in insts:
-		dump_frame(inst['frame'], outdir, inst['var'], outf)
-	
-	directed_binds = direct_binds(flatten_binds(binds, delegates, subsumes))
+		dump_frame(directed_binds, inst['frame'], outdir, inst['var'], outf)
 	
 	for dst, src in directed_binds.items():
