Fatti: A. A._, cittadino serbo, è giunto in Svizzera nel luglio del 1988 per ricongiungersi con i genitori. A tale scopo, egli è stato posto a beneficio di un permesso di dimora e, dal 30 aprile 1990, di un permesso di domicilio. Tossicodipendente, durante il suo soggiorno in Svizzera A._ ha interessato le autorità amministrative e penali nei seguenti termini: - Decreto d'accusa del 17 maggio 1995: riconosciuto colpevole di violazione (luglio 1994-marzo 1995) alla legge federale sugli stupefacenti del 3 ottobre 1951 (LStup; RS 812.121) e condannato a 30 giorni di arresto sospesi condizionalmente con un periodo di prova di 1 anno. - Decreto d'accusa del 17 febbraio 1997: riconosciuto colpevole di ripetuta e continuata infrazione alla LStup (settembre 1994-marzo 1995), ammonito, e condannato a 90 giorni di detenzione, sospesi condizionalmente con un periodo di prova di 3 anni, a valere quale pena parzialmente aggiuntiva a quella comminatagli il 17 maggio 1995. - 15 aprile 1997: 1° ammonimento dipartimentale. - Decreto d'accusa del 6 aprile 1999: riconosciuto colpevole di contravvenzione alla LStup (5 dicembre 1998) e contravvenzione all'allora vigente legge federale sul trasporto pubblico (11 giugno e 7 settembre 1998) e condannato al pagamento di una multa di fr. 200.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 25 ottobre 2001: riconosciuto colpevole di infrazione alla legge federale sulle armi del 20 giugno 1997 (LArm; RS 514.54) (31 marzo 2001) e ripetuta contravvenzione all'allora vigente legge federale sul trasporto pubblico (16 maggio e 9 luglio 2001) e condannato al pagamento di una multa di fr. 300.-- così come al versamento di fr. 140.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa dell'11 febbraio 2002: riconosciuto colpevole di contravvenzione alla LStup (gennaio-29 dicembre 2001), ammonito, e condannato al pagamento di una multa di fr. 200.--, a valere quale pena parzialmente aggiuntiva a quella comminatagli il 25 ottobre 2001. - Decreto d'accusa del 27 agosto 2002: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (3 giugno 2002) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 80.-- a titolo di risarcimento alla parte civile. - 24 agosto 2004: commutazione di una multa di fr. 1'000.--, comminatagli in precedenza per violazione alla legge federale sulla circolazione stradale del 19 dicembre 1958 (LCStr; RS 741.01), in una pena di 33 giorni di arresto da espiare. - 18 gennaio 2005: commutazione di una multa di fr. 100.--, comminatagli in precedenza, in una pena di 6 giorni di arresto da espiare; - Decreto d'accusa del 22 agosto 2005: riconosciuto colpevole di ripetuta contravvenzione alla LStup (febbraio-novembre 2003) e ripetuta contravvenzione all'allora vigente legge federale sul trasporto pubblico (12 febbraio-15 settembre 2004) e condannato al pagamento di una multa di fr. 500.-- così come al versamento di fr. 300.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 7 dicembre 2005: riconosciuto colpevole di infrazione (1° luglio-15 settembre 2005) e contravvenzione alla LStup (1° luglio-17 ottobre 2005) e condannato ad una pena detentiva di 40 giorni, sospesa condizionalmente con un periodo di prova di 2 anni. - 1° febbraio 2006: 2. ammonimento dipartimentale. - Decreto d'accusa del 20 marzo 2006: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (1° dicembre 2005) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 28 agosto 2006: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (15 aprile 2006) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 2 aprile 2007: riconosciuto colpevole di ripetuta contravvenzione alla LStup (18 ottobre 2005-30 dicembre 2006) e condannato al pagamento di una multa di fr. 200.--. - Decreto d'accusa del 4 giugno 2007: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (13 febbraio 2007) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - 5 settembre 2007: 3. ammonimento dipartimentale. - Decreto d'accusa dell'8 ottobre 2007: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (22 maggio 2007) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 19 novembre 2007: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (30 luglio 2007) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 27 aprile 2009: riconosciuto colpevole di contravvenzione all'allora vigente legge federale sul trasporto pubblico (22 dicembre 2008) e condannato al pagamento di una multa di fr. 100.-- così come al versamento di fr. 100.-- a titolo di risarcimento alla parte civile. - Decreto d'accusa del 1° marzo 2010: riconosciuto colpevole di infrazione alla LStup (2009) e condannato alla pena pecuniaria di 10 aliquote da fr. 30.-- ciascuna, sospesa condizionalmente con un periodo di prova di 2 anni, nonché a una multa di fr. 200.--. - 5 aprile 2010: 4. ammonimento dipartimentale. - Sentenza della Corte delle assise correzionali di Lugano del 6 marzo 2012: riconosciuto colpevole di infrazione aggravata (novembre-dicembre 2010) e di contravvenzione (6 novembre 2009-6 luglio 2011) alla LStup e condannato, tenuto conto di una scemata responsabilità, a una pena detentiva di 12 mesi, sospesa condizionalmente con un periodo di prova di 3 anni, con l'ordine di proseguire un percorso terapeutico presso "Ingrado" per un periodo di 3 anni o fino ad anticipata dimissione. B. Con decisione del 15 ottobre 2012 - richiamati segnatamente gli ammonimenti indirizzatigli, la sentenza della Corte delle assise correzionali del 6 marzo 2012 e le innumerevoli altre occasioni in cui ha interessato le autorità di polizia e giudiziarie ticinesi - la Sezione della popolazione del Dipartimento delle istituzioni del Cantone Ticino ha revocato il permesso di domicilio di cui disponeva A._, fissandogli un termine per lasciare la Svizzera. Su ricorso, detta decisione è stata confermata sia dal Consiglio di Stato, il 7 maggio 2013, che dal Tribunale cantonale amministrativo, pronunciatosi in merito con sentenza del 18 luglio 2014, dopo che A._ gli aveva comunicato di essersi sposato con una cittadina elvetica. C. Con ricorso del 27 agosto 2014, A._ si è quindi rivolto al Tribunale federale, chiedendo la restituzione del suo permesso di domicilio e l'assistenza giudiziaria. Il Tribunale cantonale amministrativo si è riconfermato nelle motivazioni e nelle conclusioni della propria sentenza. Ad essa hanno fatto in sostanza rinvio anche la Sezione della popolazione e l'Ufficio federale della migrazione. Il Consiglio di Stato si è invece rimesso al giudizio di questa Corte.